home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Night Owl 6
/
Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso
/
010a
/
ps_bios.zip
/
PS-BIOS.ASM
< prev
next >
Wrap
Assembly Source File
|
1991-04-21
|
11KB
|
275 lines
; Customized table for PERSTOR PS180-8AT/XT controller.
;
; By Bruce Travers - GEnie: TRAVERS
;
; Based on original SET_TYPE by Juan Jimenez.
;
; This program and source code may be freely distributed. It will
; load a drive parameter table into memory and point the Perstor
; controller to it instead of its own ROM table. This means you can
; change the table at your convenience to suit any type of drive. This
; works on my AT compatable 386 system with PS-180-8AT/XT controllers
; with universal BIOS. I do not guarantee it will work on every system.
;
; See the SET_TYPE.ASM file in this archive for some interesting
; comments by Juan. This program is essentially the same except it has
; been modified to suit Perstor controllers.
;
; 1) Jumper the Perstor controller so that drive unit 0 is the same number
; of heads as your actual disk drive. Try and use table 1 if possible
; since this will save you RAM because you won't have to load all
; the tables resident.
;
; Example: You have a Seagate ST-251 with 820 cylinders and 6 heads.
; Jumper the Perstor as Table 1 Entry 1 (615 cylinders by 6 heads).
; Even though 820/6 is directly supported this means you will have to
; use Table 3 at the cost of an extra 128 bytes RAM (each table contains
; 4 drives at 16 bytes per drive). Of course, if you don't mind using the
; extra RAM you should choose the table that has an exact match if possible.
;
; - If you can't find an entry with the same number of heads, try one with
; less heads. I don't know if it will work or not but the original
; SET_TYPE indicated it would.
;
; - Use an entry with less cylinders than your actual disk drive. I have
; tried more heads and it seems to work but why take chances ?
;
; 2) The table selected in step 1 is now the table where we can change the
; parameters. This source includes parameters as documented for
; the Universal BIOS. Find the table you chose in step 1 and modify the
; 4 drive entries to suit your disk drives. Don't forget to change the
; boot disk to its actual parameters!
;
; 3) If you have more than 1 disk drive, jumper the Perstor unit 1 to
; reflect the entry which you changed in the source below, as it will
; be your table not the ROM. (Likewise if you have 2 additional drives
; on another Perstor).
;
; 4) Assemble and link the program and try it out. Disk Manager and other
; utilities which use those tables should now report the correct number
; of heads and cylinders as per your customization. (Use ASSEMBLE.BAT).
;
; 5) If you want to save memory, delete all the tables AFTER the table you
; are using. In my case, I use table 1 so have deleted tables 2-4 and
; end up using 64 bytes of RAM instead of 256 bytes. These are BYTES,
; not K Bytes so some people may not bother!
;
; You may also delete the entries in the same table AFTER the entries
; you are using. In my case I am using entry 1 through 3 so have deleted
; entry 4 and saved another 16 bytes.
;
; 6) An alternative method of modifying the table is to modify PS-BIOS.COM
; using a disk editor such as Norton. Find the hex values and change them
; to whatever your drives really are.
;-----------------------------------------------------------------------------
code segment para
assume cs:code,ds:code
org 100h
psbios proc far
jmp init
table1: dw 615d ; cyls ENTRY 1
db 6d ; heads
dw 615d ; cyls
dw 615d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
dw 615d ; cyls ENTRY 2
db 8d ; heads
dw 615d ; cyls
dw 615d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
dw 733d ; cyls ENTRY 3
db 5d ; heads
dw 733d ; cyls
dw 733d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
dw 733d ; cyls ENTRY 4
db 7d ; heads
dw 733d ; cyls
dw 733d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
table2: dw 612d ; cyls ENTRY 1
db 4d ; heads
dw 612d ; cyls
dw 612d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
dw 1024d ; cyls ENTRY 2
db 5d ; heads
dw 1024d ; cyls
dw 1024d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
dw 1024d ; cyls ENTRY 3
db 8d ; heads
dw 1024d ; cyls
dw 1024d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
dw 1024d ; cyls ENTRY 4
db 15d ; heads
dw 1024d ; cyls
dw 1024d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
table3: dw 615d ; cyls ENTRY 1
db 4d ; heads
dw 615d ; cyls
dw 615d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
dw 977d ; cyls ENTRY 2
db 5d ; heads
dw 977d ; cyls
dw 977d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
dw 820d ; cyls ENTRY 3
db 6d ; heads
dw 820d ; cyls
dw 820d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
dw 1024d ; cyls ENTRY 4
db 9d ; heads
dw 1024d ; cyls
dw 1024d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
table4: dw 925d ; cyls ENTRY 1
db 5d ; heads
dw 925d ; cyls
dw 925d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
dw 925d ; cyls ENTRY 2
db 9d ; heads
dw 925d ; cyls
dw 925d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
dw 1024d ; cyls ENTRY 3
db 7d ; heads
dw 1024d ; cyls
dw 1024d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
dw 925d ; cyls ENTRY 4
db 5d ; heads
dw 925d ; cyls
dw 925d ; cyls
db 0bh
db 05h
db 0
db 0
db 0
dw 0
db 0
db 0
theend: db 0 ; Do Not Delete
init: mov ax,cs
mov ds,ax
mov dx,offset table1
mov ah,25h
mov al,41h
int 21h
mov dx,offset theend
int 27h
psbios endp
code ends
end psbios